﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using I3.AgenteIA.Dominio.Gramatica;
using Moq;

namespace I3.AgenteIA.Dominio.Teste.Gramatica
{
    [TestClass]
    public class SentencaTest
    {
        [TestMethod]
        [ExpectedException(typeof(ArgumentNullException))]
        public void Construtor_Caso1()
        {
            // Declara as variaveis auxiliares do teste
            string texto = "";

            // Declara os objetos mock do teste
            var oracao = new Mock<Oracao>();

            // Configura a execução dos métodos mock
            // N.A.

            // Realizada a execução do teste
            Sentenca sentenca = new Sentenca(oracao.Object, texto);

            // Realiza os assets dos objetos mocks e variaveis
            // N.A.
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentNullException))]
        public void Construtor_Caso2()
        {
            // Declara as variaveis auxiliares do teste
            string texto = "Criação da sentença.";

            // Declara os objetos mock do teste
            Oracao oracao = null;

            // Configura a execução dos métodos mock
            // N.A.

            // Realizada a execução do teste
            Sentenca sentenca = new Sentenca(oracao, texto);

            // Realiza os assets dos objetos mocks e variaveis
        }

        [TestMethod]
        public void Construtor_Caso3()
        {
            // Declara as variaveis auxiliares do teste
            string texto = "Criação da sentença.";

            // Declara os objetos mock do teste
            var oracao = new Mock<Oracao>();

            // Configura a execução dos métodos mock
            // N.A.

            // Realizada a execução do teste
            Sentenca sentenca = new Sentenca(oracao.Object, texto);

            // Realiza os assets dos objetos mocks e variaveis
            Assert.AreEqual(oracao.Object, sentenca.Oracao);
            Assert.AreEqual(texto, sentenca.Texto);
            Assert.AreEqual(0, sentenca.Elementos.Count());
        }
    }
}
